package com.hsmpay.qian4.service.df.zhongxin;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import com.hsmpay.base.PayBaseService;
import com.hsmpay.qian4.pojo.df.*;
import com.hsmpay.utils.*;
import com.hsmpay.utils.system.ConConfig;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DFZhongXinBankService extends PayBaseService {
	String _url="http://127.0.0.1:6789";
	String userName="hsm";
	String accountNo="7111010182600147409";
	
	static WriteFile wf = new WriteFile("df_zhongXin");
	static Logger log = Logger.getLogger(com.hsmpay.qian4.service.df.zhongxin.DFZhongXinBankService.class);
	public static String debug = ConConfig.getAttribute("ZHONGXIN_DF_DEBUG_STATUS");
	public static Map<String,String> statusTextMap = new HashMap<String, String>();
	
	static{
		
		
		statusTextMap.put("AAAAAAA", "交易处理成功!");
		statusTextMap.put("AAAAAAB", "经办成功待审核!");
		statusTextMap.put("AAAAAAC", "预约支付成功!");
		statusTextMap.put("AAAAAAD", "扣款成功!");//现金管理代理收款信息查询交易专用，表示扣款方审核通过，扣款成功；
		statusTextMap.put("AAAAAAE", "受理成功!");//已提交银行处理，需稍后使用“交易状态查询”交易（见3.6.6）进行查询；
		statusTextMap.put("AAAAAAF", "批次导入提交成功!");
		statusTextMap.put("BBBBBBB", "批次处理部分成功!");
		statusTextMap.put("CCCCCCC", "交易处理中!");
		statusTextMap.put("EEEEEEE", "交易未产生!");
		statusTextMap.put("UNKNOWN", "交易状态未知!");
	}
	private static String getReqCode(String status){
		if("AAAAAAA".equals(status)){
			return "0000";
		}else{
			return status;
		}
	}
	
	private static String getReqMsg(String status,String statusText){
		if(StringUtils.isEmpty(statusText))
			statusText = statusTextMap.get(status);
		return null == statusText ? "" : statusText;
	}
	
	/**
	 * 余额查询
	 * @param ACCTID
	 *          账户代号，最长32位
	 * @return 
	 * @throws Exception 
	 */
	public DFAccountBalance DLBALQRY()throws Exception{
		DFAccountBalance dfab = new DFAccountBalance();
		dfab.setReqCode("9992");
		dfab.setReqMsg("访问服务器超时！");
		String result="";
		String XMLData ="<?xml version=\"1.0\" encoding=\"GBK\"?>";
		XMLData+="<stream>";
		XMLData+="<action>DLBALQRY</action>";
		XMLData+="<userName>"+userName+"</userName>";
		XMLData+="<list name=\"userDataList\">";
		XMLData+="<row>";
		XMLData+="<accountNo>"+accountNo+"</accountNo>";
		XMLData+="</row>";
		XMLData+="</list>";
		XMLData+="</stream>";
		log.debug("【中信银行查询账户余额】请求参数:"+XMLData);
		wf.log("【中信银行查询账户余额】请求参数:"+XMLData, "调试");
		if(!isFormal()){
			wf.log("【中信银行查询账户余额】发送参数:测试环境", "调试");
			result="200,||<?xml version=\"1.0\" encoding=\"GBK\"?><stream><status>AAAAAAA</status><statusText>交易成功</statusText><list name=\"userDataList\"><row><accountName>中信10349232</accountName><accountNo>7111010182600147409</accountNo><balance>59836.44</balance><currencyID>01</currencyID><forzenAmt>0.00</forzenAmt><lastTranDate>20150120</lastTranDate><openBankName>中信银行总行营业结算部</openBankName><status>AAAAAAA</status><statusText>交易成功</statusText><usableBalance>59836.44</usableBalance></row></list></stream>";
		}else{
			wf.log("【中信银行查询账户余额】发送参数:生产环境", "调试");
			result= UrlUtil.httpClientUtils3(_url, XMLData);
		}
		log.debug("【中信银行查询账户余额】响应数据:"+result);
		wf.log("【中信银行查询账户余额】响应数据:"+result, "调试");
		String[] resultArr=result.split("\\|\\|");
		if("200".equals(resultArr[0].split(",")[0])){
			result=resultArr[1];
			XmlUtil xu=new XmlUtil(result,"GBK");
		    String status = xu.getNodeText("/stream/status");
		    String statusText = xu.getNodeText("/stream/statusText");
		    wf.log("【中信银行查询账户余额】交易状态:"+status, "调试");
		    wf.log("【中信银行查询账户余额】交易状态信息:"+statusText, "调试");
		    log.debug("【中信银行查询账户余额】交易状态:"+status);
		    log.debug("【中信银行查询账户余额】交易状态信息:"+statusText);
		    dfab.setReqCode(getReqCode(status));
		    dfab.setReqMsg(getReqMsg(status,statusText));
		    if("AAAAAAA".equals(status)){
		    	status=xu.getNodeText("/stream/list/row/status");
		    	statusText =xu.getNodeText("/stream/list/row/statusText");
		    	dfab.setReqCode(getReqCode(status));
			    dfab.setReqMsg(getReqMsg(status,statusText));
		    	if("AAAAAAA".equals(status)){
		    		String accountName=xu.getNodeText("/stream/list/row/accountName");
			    	String accountNo=xu.getNodeText("/stream/list/row/accountNo");
			    	String balance=xu.getNodeText("/stream/list/row/balance");
			    	String currencyID=xu.getNodeText("/stream/list/row/currencyID");
			    	String forzenAmt=xu.getNodeText("/stream/list/row/forzenAmt");
			    	String lastTranDate=xu.getNodeText("/stream/list/row/lastTranDate");
			    	String openBankName=xu.getNodeText("/stream/list/row/openBankName");
			    	String usableBalance=xu.getNodeText("/stream/list/row/usableBalance");

			    	log.debug("账户名称:"+accountName);
			    	log.debug("　　账号:"+accountNo);
			    	log.debug("账号余额:"+balance);
			    	log.debug("　　币种:"+currencyID);
			    	log.debug("冻结金额:"+forzenAmt);
			    	log.debug("最近交易日:"+lastTranDate);
			    	log.debug("开户行名称:"+openBankName);
			    	log.debug("可用账户余额 :"+usableBalance);
		    		 
			    	dfab.setReqCode("0000");
				    dfab.setReqMsg(statusText);
			    	dfab.setAcctId(accountNo);//账号
			    	dfab.setName(accountName);//账户名称
			    	dfab.setStatus(1);
			    	dfab.setBalance(balance);//账号余额
			    	dfab.setCurrency(currencyID);//币种
			    	dfab.setForzenAmt(forzenAmt);//冻结金额
			    	dfab.setAvailBal(usableBalance);//可用金额
			    	dfab.setOpeningBank(openBankName);
		    	}
		    }
		}
		return dfab;
	}
	/**
	 * 账户明细信息查询
	 * 
	 * @param lowAmount
	 *          最小金额，decimal(15,2)
	 * @param upAmount
	 * 			最大金额 decimal(15,2)
	 * @param startDate
	 * 			起始日期char(8) 格式YYYYMMDD
	 * @param endDate
	 * 			终止日期char(8) 格式YYYYMMDD
	 * @param pageNumber
	 * 			请求记录条数，最大为20
	 * @param startRecord
	 * 			起始记录号
	 * @return 
	 * @throws Exception 
	 */
	@Deprecated
	public String DLTRNALL(String lowAmount,String upAmount,String startDate,String endDate,String pageNumber,String startRecord)throws Exception{
		String result="";
		String XMLData ="<?xml version=\"1.0\" encoding=\"GBK\"?>";
		XMLData+="<stream>";
		XMLData+="<action>DLTRNALL</action>";
		XMLData+="<userName>"+userName+"</userName>";
		XMLData+="<accountNo>"+accountNo+"</accountNo>";
		XMLData+="<lowAmount>"+lowAmount+"</lowAmount>";
		XMLData+="<upAmount>"+upAmount+"</upAmount>";
		XMLData+="<startDate>"+startDate+"</startDate>";
		XMLData+="<endDate>"+endDate+"</endDate>";
		XMLData+="<pageNumber>"+pageNumber+"</pageNumber>";
		XMLData+="<startRecord>"+startRecord+"</startRecord>";
		XMLData+="</stream>";
		log.debug("XMLData:"+XMLData);
		result= UrlUtil.httpClientUtils3(_url, XMLData);
		log.debug("result:"+result);
		String[] resultArr=result.split("\\|\\|");
		if("200".equals(resultArr[0].split(",")[0])){
			result=resultArr[1];
			XmlUtil xu=new XmlUtil(result,"GBK");
		    String status = xu.getNodeText("/stream/status");
		    String statusText = xu.getNodeText("/stream/statusText");
		    
		    String accountNo = xu.getNodeText("/stream/accountNo");
		    String accountName = xu.getNodeText("/stream/accountName");
		    String openBankName = xu.getNodeText("/stream/openBankName");
		    String totalRecords = xu.getNodeText("/stream/totalRecords");
		    String returnRecords = xu.getNodeText("/stream/returnRecords");
		    
		    log.debug("交易状态:"+status);
		    log.debug("交易状态信息:"+statusText);
		    log.debug("账号:"+accountNo);
		    log.debug("账户名称:"+accountName);
		    log.debug("开户行名称:"+openBankName);
		    log.debug("总记录条数:"+totalRecords);
		    log.debug("返回记录条数:"+returnRecords);
		    if("AAAAAAA".equals(status)){
		    	
		    }else{
		    	result=status+"|"+statusText;
		    }
		}
		return result;
	}
	/**
	 * 单笔支付
	 * 
	 * @param clientID
	 *          客户流水号char(20)
	 * @param payType
	 * 			支付方式 00：汇票； 01：中信内部转账；02：大额支付；03：小额支付；04：同城票交char(2) ；05：网银跨行支付
	 * @param recBankNo
	 * 			收款人所属银行行号 varchar(12)，可空，支付方式为05(网银跨行支付)时非空
	 * @param recAccountNo
	 * 			收款账号
	 * @param recAccountName
	 * 			收款账户名称:当支付方式payType不为05(网银跨行支付)时，其中收款账号开户行名与收款账号开户行联行网点号至少输一项-
	 * @param recOpenBankName
	 * 			收款账户开户行
	 * @param recOpenBankCode
	 * 			收款账户开户行联行网点号 char(12):当支付方式payType不为05(网银跨行支付)时，其中收款账号开户行名与收款账号开户行联行网点号至少输一项
	 * @param citicbankFlag
	 * 			中信标志 0：中信；1：他行
	 * @param cityFlag
	 * 			同城标志 0：同城；1：异地
	 * @param tranAmount
	 * 			金额 decimal(15,2)
	 * 
	 * @param 
	 * @return 
	 * @throws Exception 
	 */
	public DFContentResult DLOUTTRN(String clientID,String payType,String recBankNo,String recAccountNo,String recAccountName,String recOpenBankName,String recOpenBankCode,String citicbankFlag,String cityFlag,String tranAmount)throws Exception{
		DFContentResult dfr = new DFContentResult();
		dfr.setBankCard(recAccountNo);
		dfr.setReqCode("9992");
		dfr.setReqMsg("访问服务器超时！");
		
		String result="";
		String XMLData ="<?xml version=\"1.0\" encoding=\"GBK\"?>";
		XMLData+="<stream>";
		XMLData+="<action>DLOUTTRN</action>";
		XMLData+="<userName>"+userName+"</userName>";
		XMLData+="<clientID>"+clientID+"</clientID>";
		XMLData+="<preFlg>0</preFlg>";
		XMLData+="<preDate></preDate>";
		XMLData+="<preTime></preTime>";
		XMLData+="<payType>"+payType+"</payType>";
		XMLData+="<recBankNo>"+recBankNo+"</recBankNo>";
		XMLData+="<payAccountNo>"+accountNo+"</payAccountNo>";
		XMLData+="<recAccountNo>"+recAccountNo+"</recAccountNo>";
		XMLData+="<recAccountName>"+recAccountName+"</recAccountName>";
		XMLData+="<recOpenBankName>"+recOpenBankName+"</recOpenBankName>";
		XMLData+="<recOpenBankCode>"+recOpenBankCode+"</recOpenBankCode>";
		XMLData+="<citicbankFlag>"+citicbankFlag+"</citicbankFlag>";
		XMLData+="<cityFlag>"+cityFlag+"</cityFlag>";
		XMLData+="<tranAmount>"+tranAmount+"</tranAmount>";
		XMLData+="<abstract>跨行转账</abstract>";
		XMLData+="<memo></memo>";
		XMLData+="<takerName></takerName>";
		XMLData+="<takerID></takerID>";
		XMLData+="<takerIDType></takerIDType>";
		XMLData+="</stream>";
		log.debug("【中信银行-单笔支付】请求参数:"+XMLData);
		wf.log("【中信银行-单笔支付】请求参数:"+XMLData, "调试");
		if(!isFormal()){
			wf.log("【中信银行-单笔支付】发送参数:测试环境", "调试");
			result="200,||<?xml version=\"1.0\" encoding=\"GBK\"?><stream><abstract>跨行转账</abstract><memo></memo><payAccountName>中信10349232</payAccountName><payAccountNo>7111010182600147409</payAccountNo><payOpenBankName>中信银行总行营业结算部</payOpenBankName><recAccountName>颜铃璋</recAccountName><recAccountNo>6226220112722482</recAccountNo><recOpenBankName>中国民生银行</recOpenBankName><status>AAAAAAE</status><statusText>已提交银行处理，请稍后使用交易状态查询交易进行查询</statusText><tranAmount>0.01</tranAmount><tranDate></tranDate><tranNo></tranNo><tranTime></tranTime></stream>";
		}else{
			wf.log("【中信银行-单笔支付】发送参数:生产环境", "调试");
			result= UrlUtil.httpClientUtils3(_url, XMLData);
		}
		log.debug("【中信银行-单笔支付】响应数据:"+result);
		wf.log("【中信银行-单笔支付】响应数据:"+result, "调试");
		String[] resultArr=result.split("\\|\\|");
		if("200".equals(resultArr[0].split(",")[0])){
			result=resultArr[1];
			XmlUtil xu=new XmlUtil(result,"GBK");
		    String status = xu.getNodeText("/stream/status");
		    String statusText = xu.getNodeText("/stream/statusText");
	    
		    wf.log("【中信银行查询账户余额】交易状态:"+status, "调试");
		    wf.log("【中信银行查询账户余额】交易状态信息:"+statusText, "调试");
		    log.debug("【中信银行查询账户余额】交易状态:"+status);
		    log.debug("【中信银行查询账户余额】交易状态信息:"+statusText);
		    dfr.setStatus(0);
		    if("AAAAAAA".equals(status) || "AAAAAAE".equals(status)){
		    	dfr.setReqCode("0000");
		    	dfr.setStatus(1);
		    }
		    
		    dfr.setReqMsg(getReqMsg(status,statusText));
		    dfr.setMerchantSerial(clientID);
		}
		return dfr;
	}
	/**
	 * 交易状态查询
	 * 暂时只解析了 第一个
	 * @param merchantSerial
	 *          商户流水号
	 * @return 
	 * @throws Exception 
	 */
	public DFContentResult DLCIDSTT(String merchantSerial)throws Exception{
		DFContentResult dfcr = new DFContentResult();
		dfcr.setReqCode("9992");
		dfcr.setReqMsg("访问服务器超时！");
		dfcr.setStatus(0);
		
		String result="";
		String XMLData ="<?xml version=\"1.0\" encoding=\"GBK\"?>";
		XMLData+="<stream>";
		XMLData+="<action>DLCIDSTT</action>";
		XMLData+="<userName>"+userName+"</userName>";
		XMLData+="<clientID>"+merchantSerial+"</clientID>";
		XMLData+="<type></type>";
		XMLData+="</stream>";
		
		log.debug("【中信银行-交易状态查询】请求参数:"+XMLData);
		wf.log("【中信银行-交易状态查询】请求参数:"+XMLData, "调试");
		if(!isFormal()){
			wf.log("【中信银行-交易状态查询】发送参数:测试环境", "调试");
			result="200,||<?xml version=\"1.0\" encoding=\"GBK\"?><stream><status>AAAAAAA</status><statusText>交易成功</statusText><list name=\"userDataList\"><row><status>AAAAAAA</status><statusText>交易成功</statusText><stt>0</stt></row></list></stream>";
		}else{
			wf.log("【中信银行-交易状态查询】发送参数:生产环境", "调试");
			result= UrlUtil.httpClientUtils3(_url, XMLData);
		}
		log.debug("【中信银行-交易状态查询】响应数据:"+result);
		wf.log("【中信银行-交易状态查询】响应数据:"+result, "调试");
		
		String[] resultArr=result.split("\\|\\|");
		if("200".equals(resultArr[0].split(",")[0])){
			result=resultArr[1];
			XmlUtil xu=new XmlUtil(result,"GBK");
		    String status = xu.getNodeText("/stream/status");
		    String statusText = xu.getNodeText("/stream/statusText");
		    log.debug("交易状态:"+status);
		    log.debug("交易状态信息:"+statusText);
		    if("AAAAAAA".equals(status)){
		    	status=xu.getNodeText("/stream/list/row/status");
		    	statusText =xu.getNodeText("/stream/list/row/statusText");
		    	String stt =xu.getNodeText("/stream/list/row/stt");
		    	
			    log.debug("交易状态:"+status);
			    log.debug("交易状态信息:"+statusText);
			    log.debug("状态标志:"+stt);//状态标志  char(1) 0 成功 1 失败 2未知 3审核拒绝 4 用户撤销
			    dfcr.setReqCode(getReqCode(status));
			    dfcr.setReqMsg(getReqMsg(status,statusText));
			    
			    if("0".equals(stt)){
			    	dfcr.setStatus(1);
			    }else if("1".equals(stt)){
			    	dfcr.setStatus(0);
			    }else if("2".equals(stt)){
			    	dfcr.setStatus(12);//未知
			    }else if("3".equals(stt)){
			    	dfcr.setStatus(13);//审核拒绝
			    }else if("4".equals(stt)){
			    	dfcr.setStatus(14);//用户撤销
			    }
	    		
	    		
	    		
		    }
		}
		return dfcr;
	}
	
	/**
	 * 其他代付导入 ###没有唯一标识  所以没有使用###
	 * 
	 * @param merchantSerial
	 *          客户流水号
	 * @param AccttoList
	 * 			转账明细
	 * 			收款账号,收款账户名称,金额多条以‘|’分隔
	 * @return 
	 * @throws Exception 
	 */
	public DFResult DLOTHSUB(String merchantSerial,List<DFContentBean> dfList)throws Exception{
		DFResult dfr = new DFResult();
		dfr.setReqCode("9992");
		dfr.setReqMsg("访问服务器超时！");
		dfr.setMerchantSerial(merchantSerial);
		
		String result="";
		String RowStr="";
		//String[] AcctArr=AccttoList.split("\\|");
		int totalNumber=dfList.size();//AcctArr.length;
		double totalAmount=0.00;
		DFContentBean dfc = null;
		for(int i=0;i<totalNumber;i++){
			dfc = dfList.get(i);
			RowStr+="<row>";
			RowStr+="<recAccountNo>"+dfc.getBankCard()+"</recAccountNo>";
			RowStr+="<recAccountName>"+dfc.getUserName()+"</recAccountName>";
			RowStr+="<tranAmount>"+dfc.getTransMoney()+"</tranAmount>";
			RowStr+="<abstract></abstract>";
			RowStr+="</row>";
			totalAmount= NumberUtil.roundF2(totalAmount + dfc.getTransMoney());
		}
		String XMLData ="<?xml version=\"1.0\" encoding=\"GBK\"?>";
		XMLData+="<stream>";
		XMLData+="<action>DLOTHSUB</action>";
		XMLData+="<userName>"+userName+"</userName>";
		XMLData+="<clientID>"+merchantSerial+"</clientID>";
		
		XMLData+="<totalNumber>"+totalNumber+"</totalNumber>";
		XMLData+="<totalAmount>"+totalAmount+"</totalAmount>";
		XMLData+="<payAccountNo>"+accountNo+"</payAccountNo>";
		XMLData+="<preFlg>0</preFlg>";
		XMLData+="<preDate></preDate>";
		XMLData+="<preTime></preTime>";
		XMLData+="<memo></memo>";
		XMLData+="<list name=\"userDataList\">";
		XMLData+=RowStr;
		XMLData+="</list>";
		XMLData+="</stream>";
		
		log.debug("【中信银行-批量代付】请求参数:"+XMLData);
		wf.log("【中信银行-批量代付】请求参数:"+XMLData, "调试");
		if(!isFormal()){
			wf.log("【中信银行-批量代付】发送参数:测试环境", "调试");
			result="200,||<?xml version=\"1.0\" encoding=\"GBK\"?><stream><status>AAAAAAA</status><statusText>交易成功</statusText></stream>";
		}else{
			wf.log("【中信银行-批量代付】发送参数:生产环境", "调试");
			result= UrlUtil.httpClientUtils3(_url, XMLData);
		}
		log.debug("【中信银行-批量代付】响应数据:"+result);
		wf.log("【中信银行-批量代付】响应数据:"+result, "调试");
		
		String[] resultArr=result.split("\\|\\|");
		if("200".equals(resultArr[0].split(",")[0])){
			result=resultArr[1];
			XmlUtil xu=new XmlUtil(result,"GBK");
		    String status = xu.getNodeText("/stream/status");
		    String statusText = xu.getNodeText("/stream/statusText");
		    log.debug("交易状态:"+status);
		    log.debug("交易状态信息:"+statusText);
		    if("AAAAAAA".equals(status) || "AAAAAAE".equals(status)){
		    	dfr.setReqCode("0000");
		    }else{
		    	dfr.setReqCode(getReqCode(status));
		    }
		    dfr.setReqMsg(getReqMsg(status,statusText));
		}
		return dfr;
	}
	
//	/**
//	 * 批量代付
//	 * @param orderNum
//	 * @param dfList
//	 * @return
//	 */
//	public DFResult dsfpay(String merchantSerial,List<DFContentBean> dfList)throws Exception{
//		StringBuilder sb = new StringBuilder();
//		int size = dfList.size();//循环提速
//		DFContentBean df = null;
//		String transAmt = null;
//		for(int i = 0; i < size; i++){//金额,账号,姓名,行号,备注,状态,明细号
//			df = dfList.get(i);
//			if(i != 0) sb.append("|");
//			sb.append(df.getBankCard()).append(",");//银行账户
//			sb.append(df.getUserName()).append(",");//开户名
//			transAmt = df.getTransMoney()+"";//交易金额
//			sb.append(transAmt);//交易金额 单位分
//		}
//		String batchContent = sb.toString();
//		return DLOTHSUB(merchantSerial,batchContent);
//	}
	
	/**
	 * 循环执行实现 查询批量代付
	 * @param merchantSerial
	 * @param dfList
	 * @return
	 */
	@Deprecated
	public DFResult dsfpay(String merchantSerial,List<DFContentBean> dfList)throws Exception{
		DFResult dfr = new DFResult();
		dfr.setReqCode("9992");
		dfr.setReqMsg("访问服务器超时！");
		try{
			dfr.setMerchantSerial(merchantSerial);
			dfr.setTransSerialsId(null);
			
			DFContentResult dfcr = null;
			//中信标志 0：中信；1：他行
			String citicbankFlag="1";
			//同城标志 0：同城；1：异地
			String cityFlag="0";
			for(DFContentBean dfc : dfList){
				citicbankFlag="1";
				cityFlag="1";
				if("北京市".equals(dfc.getBBankProvince())){
					cityFlag="0";
				}
				if("中信银行".equals(dfc.getOpeningBank())){
					citicbankFlag="0";
				}
				
				dfcr = DLOUTTRN(dfc.getMerchantSerial(),"03","",dfc.getBankCard(),dfc.getUserName(),dfc.getOpeningBank(),"",citicbankFlag, cityFlag, dfc.getTransMoney().toString());
				dfcr.setSort(dfc.getSort());
				dfr.getDfCList().add(dfcr);
			}
			
			dfr.setReqCode("0000");
			dfr.setReqMsg("交易发送成功");
		}catch(Exception e){
			e.printStackTrace();
		}
		return dfr;
	}
	
	/**
	 * 循环执行实现 查询批量代付
	 * @param merchantSerial
	 * @param dfList
	 * @return
	 */
	@Deprecated
	public DFQueryResult BatchQueryByXFERINQTRNRQ(String merchantSerial,List<DFContentBean> dfList)throws Exception{
		DFQueryResult dfq = new DFQueryResult();
		dfq.setReqCode("9992");
		dfq.setReqMsg("访问服务器超时！");
		try{
			dfq.setMerchantSerial(merchantSerial);
			dfq.setTransSerialsId(null);
			dfq.setStatus(1);
			
			DFContentResult dfcr = null;
			for(DFContentBean dfc : dfList){
				dfcr = DLCIDSTT(dfc.getMerchantSerial());
				dfcr.setSort(dfc.getSort());
				dfq.getDfCList().add(dfcr);
			}
			dfq.setReqCode("0000");
			dfq.setReqMsg("交易发送成功");
		}catch(Exception e){
			e.printStackTrace();
		}
		return dfq;
	}
	
	public String gbkToUtf8(String gbkStr)throws Exception{
		return new String(gbkStr.getBytes("GBK"),"UTF-8");
	}
	
	public boolean isFormal(){
		return ConConfig.isFormal() && "1".equals(debug);
	}
	
	@SuppressWarnings("unused")
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		com.hsmpay.qian4.service.df.zhongxin.DFZhongXinBankService CB=new com.hsmpay.qian4.service.df.zhongxin.DFZhongXinBankService();
		//最小金额，decimal(15,2)
		String lowAmount="0.00";
		//最大金额 decimal(15,2)
		String upAmount="99999999999.99";
		//起始日期char(8) 格式YYYYMMDD
		String startDate="20140901";
		//终止日期char(8) 格式YYYYMMDD
		String endDate="20140922";
		//请求记录条数，最大为20
		String pageNumber="20";
		//起始记录号
		String startRecord="1";
		/*****************对外支付*****************/
		//客户流水号
		String clientID= TimeUtils.getNowDateTime("yyyyMMddHHmmssSSSS");
		//支付方式 00：汇票； 01：中信内部转账；02：大额支付；03：小额支付；04：同城票交char(2) ；05：网银跨行支付		
		String payType="03";
		//收款人所属银行行号 varchar(12)，可空，支付方式为05(网银跨行支付)时非空
		String recBankNo="";
		//收款账号
		String recAccountNo="6226220112722482";//"6228480018034116071";
		//收款账户名称
		String recAccountName="颜铃璋";//"包月飞";
		//收款账户开户行:当支付方式payType不为05(网银跨行支付)时，其中收款账号开户行名与收款账号开户行联行网点号至少输一项-
		String recOpenBankName="中国民生银行";//"中国农业银行";
		//收款账户开户行联行网点号 char(12):当支付方式payType不为05(网银跨行支付)时，其中收款账号开户行名与收款账号开户行联行网点号至少输一项
		String recOpenBankCode="";
		//中信标志 0：中信；1：他行
		String citicbankFlag="1";
		//同城标志 0：同城；1：异地
		String cityFlag="0";
		//金额 decimal(15,2)
		String tranAmount="0.01";
		log.debug("佘额查询,返回:"+CB.DLBALQRY());
		//log.debug("账户明细信息查询,返回:"+CB.DLTRNALL(lowAmount, upAmount, startDate, endDate, pageNumber, startRecord));
		//log.debug("对外支付,返回:"+CB.DLOUTTRN(clientID, payType, recBankNo, recAccountNo, recAccountName, recOpenBankName, recOpenBankCode, citicbankFlag, cityFlag, tranAmount).getReqCode());
		//clientID="201503051431140879";
		//log.debug("交易状态查询,返回:"+CB.DLCIDSTT(clientID).getReqCode());
		
		//String AccttoList="6226220112722482,颜铃璋,0.01|6226220112722482,颜铃璋,0.02";
//		List<DFContentBean> dfList = new ArrayList<DFContentBean>();
//		DFContentBean dfc = new DFContentBean();
//		dfc.setBankCard("6226220112722482");
//		dfc.setUserName("颜铃璋");
//		dfc.setTransMoney(0.01);
//		DFContentBean dfc1 = new DFContentBean();
//		dfc1.setBankCard("6226220112722482");
//		dfc1.setUserName("颜铃璋");
//		dfc1.setTransMoney(0.02);
//		dfList.add(dfc);
//		dfList.add(dfc1);
//		log.debug("其他代付导入,返回:"+CB.DLOTHSUB(clientID, dfList));
	}

}
